//-------------------------------------------------------------------------
/**
   File:   Registry.h

   Descr.: - todo -

   Author: Stefan Leihkauf
   Date:   8/9/2011
*/
//-------------------------------------------------------------------------
#ifndef _REGISTRY_H
#define _REGISTRY_H
#include "registry/RegistryKey.h"

class Registry
{
private:
	/* the character used as delimiter for registry paths */
	static const StdString PathDelimiter;

	/* open any rootkey */
	static RegistryKey OpenRootKey(const RootKeyHandle& rootKeyHandle, const RegistryKey::AccessRights& accessRights = RegistryKey::Read);

public:
	/* open specific rootkey */
	static RegistryKey ClassesRoot();	// HKEY_CLASSES_ROOT
	static RegistryKey CurrentConfig();	// HKEY_CURRENT_CONFIG
	static RegistryKey CurrentUser();	// HKEY_CURRENT_USER
	static RegistryKey LocalMachine();	// HKEY_LOCAL_MACHINE
	static RegistryKey Users();			// HKEY_USERS

	/* open registry key */
	static RegistryKey OpenKey(const RootKeyHandle& rootKeyHandle, const StdString& pathName, const RegistryKey::AccessRights& accessRights);
};
#endif //!defined _REGISTRY_H